package be.swsb.fiazard.main;
import static be.swsb.fiazard.util.representation.FiazardJacksonModule.MODULE;
import io.dropwizard.ConfiguredBundle;
import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment;
import org.mongojack.internal.MongoJackModule;
import be.swsb.dropwizard.healthchecks.MongoDBHealthCheck;
import be.swsb.fiazard.common.eventsourcing.EventStore;
import com.commercehub.dropwizard.mongo.ManagedMongoClient;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mongodb.DB;
public class MongoBundle implements ConfiguredBundle<FiazardConfig> {
private DB db;
private EventStore eventStore;
private ObjectMapper objectMapper;
@Override
public void initialize(Bootstrap<?> bootstrap) {
}
@Override
public void run(FiazardConfig configuration, Environment environment) throws Exception {
ManagedMongoClient mongoClient = configuration.getMongo().build();
db = mongoClient.getDB(configuration.getMongo().getDbName());
environment.lifecycle().manage(configuration.getMongo().build());
environment.healthChecks().register("MongoDBHealthCheck", new MongoDBHealthCheck(db));
eventStore = new EventStore(db);
objectMapper = MongoJackModule.configure(new ObjectMapper());
objectMapper.registerModule(MODULE);
}
public DB getDb() {
return db;
}
public EventStore getEventStore() {
return eventStore;
}
public ObjectMapper getObjectMapper() {
return objectMapper;
}
}